#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <climits>
#include <vector>
#include <cmath>
using namespace std;

int main()
{
    int n = 0;
    cin >> n;
    vector<vector<int>> dp(sqrt(n) + 1, vector<int>(n + 1, INT_MAX));
    dp[0][0] = 0;
    for (int i = 1;i < dp.size();i++)
    {
        for (int j = 0;j <= n;j++)
        {
            int x = INT_MAX;
            if (j - i * i >= 0) x = dp[i][j - i * i] + 1;
            dp[i][j] = min(x, dp[i - 1][j]);
        }
    }
    // for(auto a:dp)
    // {
    //     for(auto b:a)
    //     {
    //         cerr<<b<<" ";
    //     }
    //     cerr<<endl;
    // }
    cout << dp[sqrt(n)][n];
}